package io;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲流的读写之所以快是因为内部维护了一个默认为8K的字节数组(长度可调).
 * 然后无论我们对缓冲流的读写是怎么进行的,缓冲流一定会转换为块读写来保证读写效率.
 *
 * 对于缓冲字节输出流而言,写出数据时有时需要考虑缓冲区问题,因为可能存在写出数据不及时的问题.
 */
public class BOS_FlushDemo {
    public static void main(String[] args) throws IOException {
        //向文件中写入数据
        FileOutputStream fos = new FileOutputStream("bos.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        bos.write("测试测试~".getBytes(StandardCharsets.UTF_8));
        /*
            强制将缓冲流缓冲区中的数据写出

            频繁调用flush方法会增加写出次数从而降低写出效率，但是可以保证写出数据的即时性。
            因此实际开发中可结合需求进行
         */
//        bos.flush();
        System.out.println("写出完毕");
        //close方法中会自动调用一次flush
        bos.close();
    }
}




